package Exercise;
import java.util.Scanner;
public class Insert_sort {
    public static void main(String[] args){
        int[] arr= new int[11];
        Scanner sc = new Scanner(System.in);
        arr[0] = 0;
        System.out.println("输入10个数字：");
        for(int i = 1;i<arr.length;i++){
            int num = sc.nextInt();
            arr[i] = num;
        }
        System.out.print("排序前：");
        Put(arr);
        System.out.print("排序后：");
        Sort(arr);
        Put(arr);
    }
    public static void Put(int[] arr){
        for(int i = 1;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
    }
    //直接插入排序
    public static int[] Sort(int[] arr){
        //后面的数比前面的小，将前面的数往后面移动一位，后面的那个数放在原来的前面的数的位置上,不断循环
        for(int i =2;i<arr.length;i++){
            //递增顺序
            if(arr[i]<=arr[i-1]){
                //让arr[0]暂存待排序的数
                arr[0] = arr[i];
                //让待排序前的一位数移动到待排序数的位置上
                arr[i] = arr[i-1];
                //它的前一位已经往后移动过了，接着从它的前两位开始，让它们都往后移动一位
                int j=i-2;
                for(;arr[0]<arr[j];--j)
                    arr[j+1] = arr[j];
                //将待排序的数放到它应该插入的位置上
                arr[j+1] = arr[0];
            }
        }
        return arr;
    }
}
